import java.util.HashMap;
import java.util.Map;

/**
 * 删除重复的节点，通过 单循环计数版本。
 */
public class JavaDemo6 {
    public static void main(String[] args) {
        int[] arrays = {1, 2, 2, 3, 3, 4, 5, 5};
        ListNode head = new ListNode(arrays[0]);
        ListNode next = head;
        for (int i = 1; i < arrays.length; i++) {
            ListNode node = new ListNode(arrays[i]);
            next.next = node;
            next = node;
        }
        ListNode showParent = head;
        while (showParent != null) {
            System.out.println(showParent.val);
            showParent = showParent.next;
        }
        System.out.println("---------------");
        showParent = deleteDuplicates(head);
        while (showParent != null) {
            System.out.println(showParent.val);
            showParent = showParent.next;
        }
    }

    static public ListNode deleteDuplicates(ListNode head) {
        ListNode res = new ListNode(-1);
        res.next = head;
        ListNode cur = res;
        ListNode pre = res;
        int count=0;
        while (cur!=null&&cur.next!=null){
            if (cur.val==cur.next.val){
                count++;
                // 跳过next 节点。所以比对的还是当前的cur 和他的下一个节点。
                cur.next=cur.next.next;
            }else {
                if (count>0){
                    // 因为我们删除所有重复的，所以赋值 cur.next.
                    pre.next=cur.next;
                    count=0;
                }else {
                    pre=cur;
                }
                cur=cur.next;
            }
        }
        if (count>0){
            // 设置最后的节点为null。如果count 等于0，那么因为最后的节点的next 就是空就不需要设置。
            pre.next= null;
        }
        return res.next;
    }

}
